[PRESERVE — DO NOT MERGE] fix/node24-actions-and-daily-summary: 9 rescued commits, triaged - #260
[PRESERVE — DO NOT MERGE] fix/node24-actions-and-daily-summary: 9 rescued commits, triaged#260labgadget015-dotcom wants to merge 9 commits into
Conversation
Migrates all GitHub Actions pins to node24-compatible runtimes before the June 16, 2026 forced cutoff, and fixes a path-resolution bug in autopilot that was silently writing DAILY_SUMMARY.md outside the repo. Actions bumped (12 workflow files): - actions/github-script v7 → v8 (node20 → node24, 9 occurrences) - codecov/codecov-action v4 → v5 (node20 → composite, 2 occurrences) - actions/labeler v5 → v6 (node20 → node24, 1 occurrence) autopilot/autopilot.py: when --output is supplied via CLI, resolve the path relative to cwd() instead of re-rooting against __file__.parent.parent, which was writing the file one directory above the workspace root. Note: actions/create-release@v1 and actions/upload-release-asset@v1 in release-and-publish.yml are archived with no v2+ — migration to softprops/action-gh-release requires separate review. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…on-gh-release Replaces actions/create-release@v1 and actions/upload-release-asset@v1 (both archived by GitHub, no node24 release exists) with a single softprops/action-gh-release@v2 step that handles both release creation and asset upload via the files: input. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
.secrets.baseline (detect-secrets baseline) and docs/API_EXAMPLES.md (documentation with placeholder curl examples) were triggering gitleaks generic-api-key and curl-auth-header rules on every scan. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add -r to all read commands (SC2162) - Quote $(pwd) in docker volume mount (SC2046) - Quote $GITHUB_TOKEN in kubectl secret (SC2086) - Add shellcheck source=/dev/null before source venv/bin/activate (SC1091) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- scripts/automation/create-release.sh: add -r to read, quote variable in git log - scripts/automation/lint-code.sh: use ./*.py glob (SC2035), xargs -0 with find -print0 (SC2038) - scripts/automation/setup-dev-env.sh: shellcheck source=/dev/null, single-quote Windows path echo - scripts/automation/setup_python.sh: shellcheck source=/dev/null - scripts/setup-dev.sh: shellcheck source=/dev/null on all four source calls - start.sh: remove UTF-8 BOM (SC1082), add -r to read Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
actions/labeler@v6 was 404-ing on missing config file on every PR. Uses existing repo labels where possible; new labels (core, agents, autopilot, dependencies) created in the repo. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
v3.0.0 is a Node 20 -> Node 24 runtime migration: "No changes to inputs, outputs, or behavior." Node 24 became the default runtime for JavaScript actions on 2026-06-16 and Node 20 leaves the runners in fall 2026. No GITLEAKS_LICENSE is required here. The action's README scopes the license to organization accounts: "If you are scanning repos that belong to a personal account, then no license key is required." This repo's owner is type User. Evidence the bump is safe: v2 runs green on main today with no license (run 32684406753, job "Secret Detection (Gitleaks)" success), and v3 changes no behavior. Supersedes the equivalent change stranded in draft PR #260, which also added an unnecessary GITLEAKS_LICENSE env line. Omitted here deliberately. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013JdYCSp4nmVgsNWuwNkUaZ
v3.0.0 is a Node 20 -> Node 24 runtime migration: "No changes to inputs, outputs, or behavior." Node 24 became the default runtime for JavaScript actions on 2026-06-16 and Node 20 leaves the runners in fall 2026. No GITLEAKS_LICENSE is required here. The action's README scopes the license to organization accounts: "If you are scanning repos that belong to a personal account, then no license key is required." This repo's owner is type User. Evidence the bump is safe: v2 runs green on main today with no license (run 32684406753, job "Secret Detection (Gitleaks)" success), and v3 changes no behavior. Supersedes the equivalent change stranded in draft PR #260, which also added an unnecessary GITLEAKS_LICENSE env line. Omitted here deliberately. Claude-Session: https://claude.ai/code/session_013JdYCSp4nmVgsNWuwNkUaZ Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Closing unmerged — the one live item has landed on
|
|
Correction to the comment above: I did not delete the branch. The title of this PR says Current state, verified just now:
So the branch is safe to delete whenever you want it gone — GitHub retains a closed PR's commits, and they'd stay recoverable from this page. It's simply your call, not mine. |
Why this PR exists
The branch
fix/node24-actions-and-daily-summaryheld 9 commits that existed in exactly one place — a single local ref on the m900, with its remote branch already deleted. It was pushed byte-identical (tip598c354, no rebase) so the SHAs referenced inHANDOFF.mdstay valid.The commits date from a 2026-06-04 merge-base and the branch is now 257 commits behind
main.Triage verdict: this work is ~99% already on
mainEvery touched file was diffed against
origin/main:05214efNode 24 bumps + daily-summary pathmaincarries every bump; theautopilot.pypath fix is onmainverbatim (lines 327–347), comment text includedf43f2farelease →softprops/action-gh-releaserelease-and-publish.ymlbyte-identical tomainac5e8a4Copilot autofix (autopilot.py)main's version575fca8gitleaks allowlistmainhas both entries, better written (anchored regex +[extend] useDefault)5928c36black format autopilot.pyf2e87c2·cb88bc9·b057015shellcheck fixesmain598c354add.github/labeler.ymlmainhas its ownlabeler.yml→ add/add conflictsecurity_scan.yml: this branch bumpsgitleaks/gitleaks-action@v2 → v3.mainis still on v2. That is the only unlanded change in all 9 commits — but do not cherry-pick it blind. The hunk changes two things, not one:Verified against live repo state:
GITLEAKS_LICENSEis not a secret on this repo (gh secret list— 11 secrets, not among them). The reference would expand to an empty string.User, not anOrganization(gh api .../owner.type), so gitleaks' license gate should not apply — v2 gates orgs only. Whether v3 kept that carve-out is unverified.v3.0.0is the only v3 release, and this bump is ~2.5 months stale.security_scan.ymlhas nocontinue-on-errorsince the repo went public, so a wrong guess here fails the security scan onmain, it does not warn.Before adopting: read v3.0.0's release notes / migration guide, confirm the org-only license carve-out survived, and decide whether the
GITLEAKS_LICENSEline should come along at all (on a User-owned repo it is probably noise). Validate on a branch with a real scan run before it reachesmain.(Unrelated straggler spotted while diffing:
mainstill pinsactions/github-script@v7atdeploy-landing.yml:75. Not this branch's scope — noting it for the backlog.)Recommended disposition
Preservation is already satisfied by the remote ref itself — this PR is the readable record of what was in it and why it can go.
Conflicts are intentional — do not resolve here
.github/labeler.yml(add/add) ·.gitleaks.toml(add/add) ·autopilot/autopilot.py(content).Resolving them would mean rebasing, which rewrites all 9 SHAs and destroys the artifact being preserved. "Not mergeable" is the correct signal.
Expected CI noise
CI will be red — a 257-behind branch against current
main. That is expected, not a defect to chase.ai_agent_workflowself-skips on draft;dependabot-automergeis actor-gated todependabot[bot](no auto-merge path);stale-pr-handlersetsexempt-draft-pr: true.elite_copilothas no draft guard and will post one bot comment below — ignore it.🤖 Generated with Claude Code
https://claude.ai/code/session_01GipLwSamx8HJU2pHaScFB2